package com.itbaizhan;

/**
 * StringBuffer 线程安全，做线程同步检查，效率低
 * StringBuilder （常用） 线程不安全，不做线程同步检查 效率高 （常在方法里用，这样不存在线程安全问题）
 */
//toString 可以打印出字符
 /*重载的 public StringBuilder append() 方法
  可以为该StringBuilder 对象添加字符序列，仍然返回自身对象
 * 方法 public StringBuilder delete(int start,int end)
  可以删除从start开始到end-1为止的一段字符序列，仍然返回自身对象
 * 方法 public StringBuilder deleteCharAt(int index)
  移除此序列指定位置的 char, 仍然返回自身对象
 * 重载的 public StringBuilder insert() 方法  可以为该StringBuilder
   对象在指定位置插入字符序列，仍然返回自身对象
 *  方法 public StringBuilder reverse（） 用于将字符序列逆序，仍然返回自身对象*/
public class TestString02 {
    public static void main(String[] args) {
        String str = "aa";
       // StringBuffer s = new StringBuffer("aa");
        //StringBuilder s1 = new StringBuilder("aa");
        /*StringBuilder*/
        StringBuilder sb  = new StringBuilder();
        for(int i =0;i<7;i++){
            sb.append((char)('a'+i)); //追加单个字符  append 指abcdefg
        }
        System.out.println(sb.toString());//转换成String输出
        //sb.append("1").append("2").append("3"); 方法链 把自己返回去 原码：return this;
        sb.append(",I can sing my abc!");//追加字符串
        System.out.println(sb.toString());
        /*StringBuffer,下面的方法同样适用StringBuilder*/
        StringBuffer sb2 = new StringBuffer("北京尚学堂");
        sb2.insert(0,"爱").insert(0,"我");//插入字符串  有 .   .  都是返回自己，可以调用自己
        System.out.println(sb2);
        sb2.delete(0,2);//删除字符串  删除序号0 ，1 的字符串
        System.out.println(sb2);
        sb2.deleteCharAt(0).deleteCharAt(0);//删除某个字符
        System.out.println(sb2.charAt(0));//获取某个字符
        System.out.println(sb2.reverse());//字符逆转
    }
}
